package com.huang.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;

import com.huang.mapper.UserMapper;
import com.huang.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;


import javax.annotation.Resource;

import java.util.ArrayList;
import java.util.List;
//写mybatis-plus的操作语言
@Service
public class UserService {
    @Resource
    UserMapper userMapper;


    //查询所有数据
    public List<User> getAll() {
        User user=new User();
        QueryWrapper<User> query=new QueryWrapper(user);
        List<User> list= userMapper.selectList(query);
        return list;
    }


    //根据id来查询
    public User getId(User user) {

     return userMapper.selectById(user.getId());

    }
  //根据name来查询
    public List<User> getName(User user) {

          QueryWrapper<User> query=new QueryWrapper();

         query.eq("name",user.getName());
        List<User> list= userMapper.selectList(query);
         return list;

    }
//根据范围来查询，在条件构造器上面需要添加泛型才能使用多个条件联查
    public List<User> getAge(User user) {

        QueryWrapper<User> query=new QueryWrapper();
        query.gt("age",  user.getAge())
                .eq("sex", user.getSex());

        List<User> list=new ArrayList<>();

        list=userMapper.selectList(query);


        return list;
    }

    //根据like关键字来查的
    public List<User> like(User user) {
        QueryWrapper<User> query=new QueryWrapper();
        List<User> list=new ArrayList<>();
        query.like("Name",user.getName());
        list=userMapper.selectList(query);
        return list;

    }
    //根据in关键字来查询

    public List<User> in(Integer[] a) {

        QueryWrapper<User> query=new QueryWrapper();
        query.in("id",a);
        List<User> list=userMapper.selectList(query);
        return list;

    }

    //根据in关键字来查询

    public List<User> orderBy(User user) {

        QueryWrapper<User> query=new QueryWrapper();
        query.eq("name",user.getName())
                .orderByDesc("user.getAge()"  );
        List<User> list=userMapper.selectList(query);
        return list;

    }

//动态查询，使用booleam 来判断使用是否输入了空的数据
    //数值型的使用世界判断，字符型的使用StringUtils.hasLength()来进行判断
    public List<User> mselect(User user) {
     QueryWrapper<User> query=new QueryWrapper<>();
        boolean ageB=(user.getAge() !=null);
        boolean sexB=(StringUtils.hasLength(user.getSex()));

        query.ge(ageB, "age",user.getAge())
                .eq(sexB,"sex",user.getSex());

        List<User> list =userMapper.selectList(query);
        return list;


    }
     //删除操作
    public void deleteId(User user) {
        //userMapper.deleteById(user.getId());//根据id删除

        QueryWrapper<User> query=new QueryWrapper();
        query.eq("name", user.getName());
        userMapper.delete(query);

    }
     //更新操作
    public void updateId(User user) {
       // userMapper.updateById(user);根据id更新的话直接把数据和对应的id闯入就行了

        //根据其他的修改
        UpdateWrapper<User> update=new UpdateWrapper();
        //判断条件，根据什么来更新
        update.eq("name", user.getName());


    }
}
